/*
Problem Description
今年的ACM暑期集训队一共有18人，分为6支队伍。其中有一个叫做EOF的队伍，由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中，大家建立了深厚的友谊，阿牛准备做点什么来纪念这段激情燃烧的岁月，想了一想，阿牛从家里拿来了一块上等的牛肉干，准备在上面刻下一个长度为n的只由"E" "O" "F"三种字符组成的字符串（可以只有其中一种或两种字符，但绝对不能有其他字符）,阿牛同时禁止在串中出现O相邻的情况，他认为，"OO"看起来就像发怒的眼睛，效果不好。

你，NEW ACMer,EOF的崇拜者，能帮阿牛算一下一共有多少种满足要求的不同的字符串吗？

PS: 阿牛还有一个小秘密，就是准备把这个刻有 EOF的牛肉干，作为神秘礼物献给杭电五十周年校庆，可以想象，当校长接过这块牛肉干的时候该有多高兴！这里，请允许我代表杭电的ACMer向阿牛表示感谢！

再次感谢！
Input
输入数据包含多个测试实例,每个测试实例占一行,由一个整数n组成，(0<n<40)。
Output
对于每个测试实例，请输出全部的满足要求的涂法，每个实例的输出占一行。
Sample Input
1
2
Sample Output
3
8
 */
package com.yuan.algorithms.practice201512;

import java.util.Scanner;

/**
 * @author YouYuan <br>
 *         E-mail:1265161633@qq.com <br>
 *         创建时间：2015年12月5日 上午9:56:33 <br>
 *         说明:分析题意，我们知道这是一道排列计数问题。而且，题意的要求是对于给定字符串长度n，给出对应的方案数m。我很容易联想到“f(n) = m”这样的函数关系。并且，题目中的限制条件只有“两个O不能相邻”。计数 + 简单限制 = 递推。接下来的问题就是求出递推公式了。
 *         第n格取“O”: 对于第n格取“O”的情况，为了保证两个“O”不相邻，n-1格有两种可能，即“E”、“F”。对于余下的n-2格，由于第n-1格不取“O”，所以第n-2格不受n-1格的限制。其排列数等于f(n-2)。
 *         第n格不取“O”: 对于第n格不取“O”的情况，即取“E”、“F”。对于余下的n-1格，由于第n格不取“O”，所以，第n-1格不受n格的限制。其排列数等于f(n-1)。
 *         综上，f(n) = 2*f(n-2) + 2*f(n-1) = 2*(f(n-2) + f(n-1))
 */
public class EOF牛肉串 {
	
	static Scanner in = new Scanner(System.in);
	
	public static void main(String[] args) {
		long[] arr = new long[41];
		arr[1] = 3;arr[2] = 8;
		for (int i = 3; i < arr.length; i++) {
			arr[i] = (arr[i-1] + arr[i-2]) << 1;
		}
		while(in.hasNext()) {
			int n = in.nextInt();
			System.out.println(arr[n]);
		}
	}

}
